export default class CustomContextPad {
    constructor(config, contextPad, create, elementFactory, injector, translate) {
        this.create = create;
        this.elementFactory = elementFactory;
        this.translate = translate;

        if (config.autoPlace !== false) {
            this.autoPlace = injector.get('autoPlace', false);
        }

        contextPad.registerProvider(this); // 定义这是一个contextPad
    }


    /*
    group: 属于哪个分组, 比如tools、event、gateway、activity等等,用于分类
    className: 样式类名, 我们可以通过它给元素修改样式
    title: 鼠标移动到元素上面给出的提示信息
    action: 用户操作时会触发的事件
    */
    getContextPadEntries(element) {

        const {
            autoPlace,
            create,
            elementFactory,
            translate
        } = this;

        function appendTask(event, element) {
            if (autoPlace) {
                const shape = elementFactory.createShape({ type: 'bpmn:Task' });
                autoPlace.append(element, shape);
            } else {
                appendTaskStart(event, element);
            }
        }

        function appendTaskStart(event) {
            const shape = elementFactory.createShape({ type: 'bpmn:Task' });
            create.start(event, shape, element);
        }


        
         return {
             'append.lindaidai-task':{
                 group:'model',
                 className: 'icon-custom lindaidai-task',
                 title: translate('创建一个类型为lindaidai-task的任务节点'),
                 action:{
                     click: appendTask,
                     dragstart: appendTaskStart
                 }
             }
         }

    }
}

CustomContextPad.$inject = [
    'config',
    'contextPad',
    'create',
    'elementFactory',
    'injector',
    'translate'
];

// 其实自定义contextPad和palette很像, 只不过是使用contextPad.registerProvider(this)来指定它是一个contextPad, 而自定义palette是用platette.registerProvider(this).
